package com.example.mymusic;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * @author xky
 */
public class Music implements Parcelable {
    /**
     * id
     */
    public long id;
    /**
     * 歌曲名
     */
    public String name;
    /**
     * 歌手
     */
    public String singer;
    /**
     * 歌曲所占空间大小
     */
    public long size;
    /**
     * 歌曲时间长度
     */
    public int duration;
    /**
     * 歌曲地址
     */
    public String path;
    /**
     * 专辑
     */
    public String album;
    /**
     * 专辑ID
     */
    public int albumId;


    /**
     * 序列化，方便传输，速度快，还很安全，方便存储
     * 可用于IPC/Binder,Activity之间的对象的传递
     */
    protected Music(Parcel in) {
        id = in.readLong();
        name = in.readString();
        singer = in.readString();
        size = in.readLong();
        duration = in.readInt();
        path = in.readString();
        album = in.readString();
        albumId = in.readInt();
    }

    /**
     * 反序列化
     */
    public static final Creator<Music> CREATOR = new Creator<Music>() {

        //返回Parcelable类的新实例。同Parcel的readXXX()方法来完成反序列化的过程。
        @Override
        public Music createFromParcel(Parcel in) {
            return new Music(in);
        }

        //创建Parcelable类的新数组。其中每个条目都初始化为空。供外部类反序列化本类数组使用。
        @Override
        public Music[] newArray(int size) {
            return new Music[size];
        }
    };

    public Music() {
    }


    /**
     * 返回当前对象的内容描述。返回值为0或者CONTENTS_FILE_DESCRIPTOR（即1）
     * 如果writeToParcel(Parcel dest, int flags)的输出包含文件描述符，则返回1，否则返回0，几乎所有的情况之下都是返回0.
     */
    @Override
    public int describeContents() {
        return 0;
    }


    /**
     * 序列化过程
     */
    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeLong(id);
        dest.writeString(name);
        dest.writeString(singer);
        dest.writeLong(size);
        dest.writeInt(duration);
        dest.writeString(path);
        dest.writeString(album);
        dest.writeInt(albumId);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSinger() {
        return singer;
    }

    public void setSinger(String singer) {
        this.singer = singer;
    }

    public long getSize() {
        return size;
    }

    public void setSize(long size) {
        this.size = size;
    }

    public int getDuration() {
        return duration;
    }

    public void setDuration(int duration) {
        this.duration = duration;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public int getAlbumId() {
        return albumId;
    }

    public void setAlbumId(int albumId) {
        this.albumId = albumId;
    }

    public String getAlbum() {
        return album;
    }

    public void setAlbum(String album) {
        this.album = album;
    }

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }
}
